package com.csx.framework.springboot.sample.boot;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.stereotype.Component;

/**
 * 生效时机:
 *      在读取项目中的beanDefinition之后执行
 * 使用场景:
 *      可以在这里动态注册自己的beanDefinition,可以加载classpath之外的bean
 * @author cuisongxu
 * @date 2024/2/25 周日 14:00
 */
@Component
public class B2BeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {

    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        System.out.println("顺序2 --- B2BeanDefinitionRegistryPostProcessor 在读取完项目内部的 beanDefinition之后 执行,可以拿到 BeanDefinitionRegistry 类型对象");
        System.out.println();
    }

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        // 由于 BeanDefinitionRegistryPostProcessor 接口继承了 BeanFactoryPostProcessor 接口,因此存在该扩展点
    }
}
